#ifndef POINT_HPP
#define POINT_HPP

#include <boost/numeric/ublas/vector.hpp>

#include <iostream>

typedef boost::numeric::ublas::vector< double > VecteurBase;
typedef boost::numeric::ublas::scalar_vector< double > VecteurScalaire;

namespace CalculIntegral
{
  
  /**
   * Classe qui implémente un point de \f$ \mathbb{R}^n \f$, permettant
   * de transformer par exemple une simple valeur en un "vecteur" de
   * dimension 1.
   *
   * @author Johan "Solo" Luisier
   * @date 2 Août 2011
   */
  class Point : public VecteurBase
  {
  public:
    Point( const VecteurBase& pt );
    Point( const double& pt = 0. );
    virtual ~Point();
    const unsigned& dimension() const;
    std::ostream& affiche( std::ostream& os ) const;
    //friend std::ostream& operator<<( std::ostream& os, const Point& pt );
  protected:
    bool verifieTaille( const unsigned& taille ) const;
  private:
    unsigned Dimension;
  };

}

#endif // POINT_HPP
